import router from '@/router'
import store from '@/store'

// 路由首位常见的有两种
// 一种是前置守卫
// 一种是后置守卫
// 路由守卫中有三个特别重要的回调参数 to from next()
// to 代表到哪儿去
// from 代表从哪儿来
// next()执行跳转的方法

router.beforeEach((to, from, next) => {
  // 每当我进入一个新页面 先判断有没有token
  // 如果没有token说明用户没有登录 或者用户的token失效
  // 如果用户直接进入的页面不是login页面 是home页面 此时接口返回的状态
  // 可以通过路由守卫在进入的时候判断一下是否有token
  if (to.path === '/login') {
    next()
  } else {
    if (store.state.token) {
      next()
    } else {
      next('/login')
    }
  }
})

// 路由后置守卫
router.afterEach((to, from) => {
  // console.log(to)
  // 可以通过 to 获取到进入页面的元数据 meta
  // 然后判断页面中的meta字段中的isRecord 字段是否为true
  // 如果true 则需要讲滚动条跳转到对应位置
  if (to.meta.isRecord) {
    // 遇到一些不实现效果的问题，就考虑一下是否是因为操作是异步的问题
    setTimeout(() => {
      window.scrollTo(0, to.meta.top)
    }, 0)
  }
})
